// 将对象变成响应式的

import {isObject} from "../shared/utils";
import {mutableHandler} from "./baseHandlers";

export function reactive(target){
  //目标对象可能不一定是数组或则对象, 可能还有set、map
  //故我们最好有一个方法 根据不同的参数 来做不同的处理

  return createReactiveObject(target, mutableHandler);
}

function createReactiveObject(target, baseHandler) {
  if (!isObject(target)) { // 不是对象 直接返回即可
    return target;
  }

  const observed = new Proxy(target, baseHandler);

  return observed;
}
